package toOffer;

/**
 * <h3>toOffer</h3>
 *
 * @author YuanAo
 * @date 2024/5/20 17:16
 * @description <p>最后一个单词的长度</p>
 */

import java.util.Objects;

/**
 * 题目：给你一个字符串 s，由若干单词组成，单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。
 * 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
 */
public class No58 {
    public static void main(String[] args) {
       String s = " ll ";
        System.out.println(lengthOfLastWord(s));
    }

    /**
     * 思路：
     * （1）先判断字符串是否只包含一个单词且不含空格，是就返回字符串长度
     * （2）去掉字符串两边的空格，反转字符串。再遍历字符串，遇到第一个空格为止，说明前面的都是字母，这些字母就是第一个单词
     * @param s
     * @return
     */
    public static int lengthOfLastWord(String s) {
        s = s.trim();
        if (!s.contains(" ")){
            return s.length();
        }

        int result = 0;
        StringBuilder sb = new StringBuilder(s).reverse();
        for (int i = 0; i < sb.length(); i++) {
            if (Objects.equals(sb.substring(i, i + 1), " ")){
                result = i;
                break;
            }
        }

        return result;
    }
}
